package com.zhang.common.core.utils.bean;

import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException;
import jakarta.validation.Validator;

import java.util.Set;


/**
 * @Class com.zhang.common.core.utils.bean
 * @Author zhang
 * @Date 2025/9/15 13:55
 * @Description bean 对象属性验证
 **/
public class BeanValidatorsUtils {

    /**
     * 参数校验方法
     *
     * @param validator 校验器实例（通常来自 Validation.buildDefaultValidatorFactory()）
     * @param object 需要校验的目标对象（被 @NotNull/@Size 等注解修饰）
     * @param groups 可选的校验组（用于分组校验场景）
     * @throws ConstraintViolationException 校验失败时抛出标准异常信息
     */
    public static void validateWithException(Validator validator, Object object, Class<?>... groups)
            throws ConstraintViolationException {
        // 执行标准校验，获取违规结果集合
        Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
        // 如果存在违规项
        if (!constraintViolations.isEmpty()) {
            // 封装违规信息并抛出异常
            throw new ConstraintViolationException(constraintViolations);
        }
    }

}
